package br.unicamp.ic.inf300.arena.modelo.logistico;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * Assento.java
 */

public class Assento {
	public static final int TIPO_ASSENTO_SIMPLES = 0;
	public static final int TIPO_ASSENTO_CONFIGURAVEL = 1;
	public static final int OCUPADO = 1;
	public static final int LIVRE = 0;
	
	private int codigo;

	private int numero;

	private int ocupado;
	
	private int tipo;

	public Assento() {
		super();
		this.ocupado = 0;
	}

	/**
	 * 
	 * @param codigo
	 * @param numero
	 * @param ocupado
	 */
	public Assento(int codigo, int numero, int ocupado) {
		super();
		this.codigo = codigo;
		this.numero = numero;
		this.ocupado = ocupado;
	}
	
	/**
	 * 
	 * @param codigo
	 * @param numero
	 * @param ocupado
	 * @param tipo
	 */
	public Assento(int codigo, int numero, int ocupado, int tipo) {
		super();
		this.codigo = codigo;
		this.numero = numero;
		this.ocupado = ocupado;
		this.tipo = tipo;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public boolean isOcupado() {
		return (ocupado > 0 ? true : false);
	}

	public void setOcupado(int ocupado) {
		this.ocupado = ocupado;
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public int getTipo() {
		return tipo;
	}

	public void setTipo(int tipo) {
		this.tipo = tipo;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("Assento ( ")
	        .append(super.toString()).append(TAB)
	        .append("codigo = ").append(this.codigo).append(TAB)
	        .append("numero = ").append(this.numero).append(TAB)
	        .append("ocupado = ").append(this.ocupado).append(TAB)
	        .append("tipo = ").append(this.tipo).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + codigo;
		result = prime * result + numero;
		result = prime * result + ocupado;
		result = prime * result + tipo;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final Assento other = (Assento) obj;
		if (codigo != other.codigo)
			return false;
		if (numero != other.numero)
			return false;
		if (ocupado != other.ocupado)
			return false;
		if (tipo != other.tipo)
			return false;
		return true;
	}
}